package com.ruoyi.gateway.service;

import java.util.List;
import com.ruoyi.gateway.domain.MessagePropertyMap;

/**
 * 消息属性映射Service接口
 *
 * @author 白向阳
 * @date 2025-09-28
 */
public interface IMessagePropertyMapService
{
    /**
     * 查询消息属性映射
     *
     * @param id 消息属性映射主键
     * @return 消息属性映射
     */
    public MessagePropertyMap selectMessagePropertyMapById(Long id);

    /**
     * 查询消息属性映射列表
     *
     * @param messagePropertyMap 消息属性映射
     * @return 消息属性映射集合
     */
    public List<MessagePropertyMap> selectMessagePropertyMapList(MessagePropertyMap messagePropertyMap);

    /**
     * 新增消息属性映射
     *
     * @param messagePropertyMap 消息属性映射
     * @return 结果
     */
    public int insertMessagePropertyMap(MessagePropertyMap messagePropertyMap);

    /**
     * 修改消息属性映射
     *
     * @param messagePropertyMap 消息属性映射
     * @return 结果
     */
    public int updateMessagePropertyMap(MessagePropertyMap messagePropertyMap);

    /**
     * 批量删除消息属性映射
     *
     * @param ids 需要删除的消息属性映射主键集合
     * @return 结果
     */
    public int deleteMessagePropertyMapByIds(Long[] ids);

    /**
     * 删除消息属性映射信息
     *
     * @param id 消息属性映射主键
     * @return 结果
     */
    public int deleteMessagePropertyMapById(Long id);


    /**
     * 获取平台属性名
     * @param direction 方向：up,down
     * @param deviceProperty 设备属性名
     * @return 平台属性名
     */
    String getPlatformProperty(String direction, String deviceProperty);

    /**
     * 获取设备属性名
     * @param direction 方向：up,down
     * @param platformProperty 平台属性名
     * @return 设备属性名
     */
    String getDeviceProperty(String direction, String platformProperty);

    /**
     * 刷新属性映射缓存
     */
    void refreshPropertyCache();

    /**
     * 根据设备属性路径获取完整的属性映射
     */
    MessagePropertyMap getPropertyMappingByDevicePath(String direction, String devicePropertyPath);

    /**
     * 根据平台属性路径获取完整的属性映射
     */
    MessagePropertyMap getPropertyMappingByPlatformPath(String direction, String platformPropertyPath);

}
